package com.example.jizhang.demos.controller;

import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.example.jizhang.demos.dto.AccountInfoDTO;
import com.example.jizhang.demos.mapper.AccountMapper;
import com.example.jizhang.demos.pojo.AccountInfo;
import com.example.jizhang.demos.resp.JsonResponseBody;
import com.example.jizhang.demos.service.AccountInfoService;
import com.example.jizhang.demos.service.AccountService;
import lombok.extern.log4j.Log4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import java.util.Date;
import java.util.List;

/**
 * @author 86195
 * 加账详情控制层
 */
@Log4j
@RestController
public class AccountInfoController {

    @Autowired
    private AccountService accountService;

    @Autowired
    private AccountInfoService accountInfoService;


    /**
     * 加账
     * @return
     */
    @RequestMapping("/api/account-info-add")
    public JsonResponseBody add(AccountInfoDTO dto){
        return JsonResponseBody.success(accountInfoService.add(dto));
    }


    /**
     * 计算代码+面值*汇率
     */
    @PostMapping("/api/account/info/sum")
    public JsonResponseBody sum(AccountInfoDTO dto){
        String resp = "AQTQ-JVE4TL-W5FBQ+100*5.7";

        // 查找 "+" 和 "*" 的位置
        int plusIndex = resp.indexOf('+');
        int starIndex = resp.indexOf('*', plusIndex + 1); // 从 "+" 之后开始查找 "*"

        // 分割字符串
        String lettersPart = resp.substring(0, plusIndex); // 字母部分
        String numberPart = resp.substring(plusIndex + 1, starIndex); // 整数部分
        String decimalPart = resp.substring(starIndex + 1); // 小数部分

        // 面值
        Double denomination = Double.parseDouble(numberPart);
        // 汇率
        Double rate = Double.parseDouble(decimalPart);
        // 加账cc
        Double amountCc = denomination * rate;

        dto.setInfoNum(amountCc);
        dto.setInfoCode(lettersPart);
        dto.setInfoTime(new Date());
        accountInfoService.add(dto);
        return JsonResponseBody.success("入账:"+amountCc+"/t代码:"+lettersPart);
    }

    /**
     * 统计某一时间段里加账cc的总和
     */
    @PostMapping("/api/amountcc/info/all")
    public JsonResponseBody all(AccountInfoDTO dto){
        String ksTime = "2024-08-25 00:00:00";
        String jsTime = "2024-08-28 00:00:00";
        QueryWrapper<AccountInfo> queryWrapper = new QueryWrapper<>();
        queryWrapper.ge("info_time",ksTime);
        queryWrapper.le("info_time",jsTime);
        List<AccountInfo> accountInfos = accountInfoService.list(queryWrapper);
        Double amountCc = 0.0;
        if (accountInfos != null && accountInfos.size() > 0) {
            for (AccountInfo accountInfo : accountInfos) {
                amountCc += accountInfo.getInfoNum();
            }
        }
        return JsonResponseBody.success(ksTime+"至"+jsTime+"内加账cc为:"+amountCc);
    }

    public static void main(String[] args) {
        String resp = "AQTQ-JVE4TL-W5FBQ-233r+18.95*500";

        // 查找 "+" 和 "*" 的位置
        int plusIndex = resp.indexOf('+');
        int starIndex = resp.indexOf('*', plusIndex + 1); // 从 "+" 之后开始查找 "*"

        // 分割字符串
        String lettersPart = resp.substring(0, plusIndex); // 字母部分
        String numberPart = resp.substring(plusIndex + 1, starIndex); // 整数部分
        String decimalPart = resp.substring(starIndex + 1); // 小数部分

        System.out.println(lettersPart+"面值："+numberPart+"汇率："+decimalPart);

    }


}
